Während der Übersicht über Systemprogrammierung in der ersten Tafelübung kam mir schon der
Punkt zur Sprache, dass wir von euch verlangen, portable Programme zu schreiben.
Jetzt wollen wir ein bisschen darauf eingehen, was überhaupt ein portables Programm ist.
Damit ein Programm portabel ist, muss es sich an eine definierte Schnittstelle halten.
Das hat zur Folge, dass das Programm überall da ausgeführt werden kann, wo diese Schnittstelle
implementiert ist.
Die Schnittstellen, an die wir uns in Systemprogrammierung richten, sind auf der einen Seite die Programmiersprache
C selbst, und zwar in der Version C11.
Hier wird der Sprachumfang der Sprache C definiert, sowie eine Liste der Standardbibliotheksfunktion
definiert.
Dazu gehören zum Beispiel die Printf-Funktion oder malloc.
Und wir halten uns an die Single Unix Specification, die eine Schnittstelle des Betriebssystems
vorgibt.
Diese Schnittstelle wird zum Beispiel implementiert durch verschiedene Unixe, zum Beispiel Solaris,
aber auch andere Betriebssysteme, zum Beispiel Mac OS, die verschiedenen BSD-Derivate, aber
auch Linux.
Damit können dann die Programme, die ihr in der Systemprogrammierung schreibt, unter
allen zuvor genannten Betriebssystemen ausgeführt werden.
Was in der Auflösung gefehlt hat, ist das Betriebssystem Windows von Microsoft.
Unter Windows ist es schwieriger, für die Single Unix Specification zu programmieren
und die Programme zur Ausführung zu bringen.
Auf der einen Seite fehlt es an einem C11-Compiler, da der von Microsoft bereitgestellte Compiler
kein C11 kann, aber dem kann man sich abhelfen, indem man einfach den GCC unter Windows verwendet.
Die Single Unix Specification ist hier schon das größere Problem, da diese von Microsoft
Windows nicht unterstützt wird.
Um sich da zu behelfen, kann man jedoch die Unix-Kompatibilitätsschicht Cyquin verwenden,
die die Betriebssystems-Schnittstelle zu Unix nachimplementiert.
Generell ist aber zu empfehlen, für die Entwicklung ein Linux-Betriebssystem zu nutzen.
Recht neu seit Windows 10 ist auch die Möglichkeit, die WSL zu verwenden.
Damit kann unter Windows ein vollwertiges Linux verwendet werden.
Da wir am Lehrstuhl aber nur wenig Erfahrung mit der WSL haben, fordern wir weiterhin
von euch, dass die ZIP-Rechner als Referenzsystem genutzt werden.
Das heißt, alle Programme, die ihr in SP schreibt, müssen auf den ZIP-Rechnern auf
der einen Seite kompilieren, aber auch richtig ausführbar sein.
Damit stellt sich die Frage, wie wir überhaupt durchsetzen, dass diese Anforderungen gewährleistet
sind.
Wir fordern von euch, dass ihr C11-Programme schreibt und dass ihr die Single-Unix-Specification
beachtet.
Um dies sicherzustellen, müsst ihr beim Aufruf des Compilers folgende Optionen mit angeben,
die den Compiler dazu anweisen, genau diese Anforderungen auch durchzusetzen.
Das heißt, wir setzen einmal bindestrich sd sgleich c11, damit nur c11-konforme Programme
erlaubt sind und mit der Option dx open source kann durchgesetzt werden, dass alle Aufrufe
ans Betriebssystem der Single-Unix-Specification entsprechen.
Ergänzend dazu verwenden wir die vorhin schon angemerkten Optionen bindestrich wall, damit
sämtliche Fehler hervorgehoben werden, und bindestrich werr, damit diese zu einem Programma-Abbuch
führen.
An der Stelle sei noch angemerkt, dass es sehr wohl wichtig ist, die Option wall für
Portabilität zu verwenden, denn wenn ihr die Warnings einschaltet, weist euch der Compiler
darauf hin, wenn ihr undefiniertes Verhalten in eurem Programm habt.
Und undefiniertes Verhalten kann sich zur Laufzeit beliebig manifestieren.
Zugänglich über
Offener Zugang
Dauer
00:04:24 Min
Aufnahmedatum
2021-04-22
Hochgeladen am
2021-04-22 14:46:04
Sprache
de-DE